package net.suncaper.mvc.mapper;

import net.suncaper.mvc.model.domain.Review;

import java.math.BigDecimal;
import java.util.List;

/**
 * Review表数据库访问接口
 */
public interface ReviewMapper {
    /**
     * 添加评价
     * @param review 评价信息
     * @return 添加结果
     */
    boolean insertReview(Review review);

    /**
     * 根据酒店名称获取评价列表
     * @param hotelName 酒店名称
     * @return 评价列表
     */
    List<Review> selectReviewsByHotelName(String hotelName);

    /**
     * 根据用户ID获取评价列表
     * @param userId 用户ID
     * @return 评价列表
     */
    List<Review> selectReviewsByUserId(String userId);

    /**
     * 查询所有评论
     * @return 评论列表
     */
    java.util.List<Review> selectAllReviews();

    /**
     * 根据评价ID获取评价
     * @param reviewId 评价ID
     * @return 评价信息
     */
    Review selectReviewById(Long reviewId);
    
    /**
     * 根据评价时间获取评价
     * @param reviewTime 评价时间
     * @return 评价信息
     */
    Review selectReviewByTime(String reviewTime);

    /**
     * 更新评价信息
     * @param review 评价信息
     * @return 更新结果
     */
    boolean updateReview(Review review);

    /**
     * 通过评价ID删除评价
     * @param reviewId 评价ID
     * @return 删除结果
     */
    boolean deleteReviewById(Long reviewId);
    
    /**
     * 删除评价
     * @param reviewTime 评价时间
     * @return 删除结果
     */
    boolean deleteReview(String reviewTime);
    
    /**
     * 计算酒店的平均评分
     * @param hotelName 酒店名称
     * @return 平均评分，如果没有评分返回null
     */
    BigDecimal calculateAverageRating(String hotelName);
}    